#include "bluetooth.h"



// 配置P1.0，P1.1 IO
void GPIO_UART2_Config(){
	GPIO_InitTypeDef init;
	init.Pin = GPIO_Pin_0 | GPIO_Pin_1;
	init.Mode = GPIO_PullUp;
	GPIO_Inilize(GPIO_P1, &init);
}


// UART1配置
void UART1_Config(){
	// 配置P3.0, P3.1
	COMx_InitDefine uart_init;
	/*
	  UART_ShiftRight: 按位移动输出，按位传输，效率较低
	  UART_8bit_BRTx： 8位数据传输，可变波特率（bps）
	  UART_9bit		： 9位数据传输，固定波特率（bps）
	  UART_9bit_BRTx： 9位数据传输，可变波特率（bps），最后一位为求校验位
	 */
	uart_init.UART_Mode = UART_8bit_BRTx;	//模式
	uart_init.UART_BRT_Use = BRT_Timer1;	// 波特率发生器率,   BRT_Timer1~BRT_Timer4
	uart_init.UART_BaudRate = 115200ul;		//波特率, 	   一般 110 ~ 115200
	uart_init.Morecommunicate = DISABLE;	//多机通讯允许, ENABLE,DISABLE
	uart_init.UART_RxEnable = ENABLE;		//允许接收,   ENABLE,DISABLE
	uart_init.BaudRateDouble = DISABLE;		//波特率加倍, ENABLE,DISABLE
	UART_Configuration(UART1, &uart_init);
	
	// uart中断使能
	NVIC_UART1_Init(ENABLE, Priority_1);
	
	// uart需要打开对应的开关才能使用
	UART1_SW(UART1_SW_P30_P31);
}


// UART2配置 - 同一个串口TXD，RXD之间通讯的波特率一定要相同
void UART2_Config(){
	// 配置P1.0, P1.1
	COMx_InitDefine uart_init;
	/*
	  UART_ShiftRight: 按位移动输出，按位传输，效率较低
	  UART_8bit_BRTx： 8位数据传输，可变波特率（bps）
	  UART_9bit		： 9位数据传输，固定波特率（bps）
	  UART_9bit_BRTx： 9位数据传输，可变波特率（bps），最后一位为求校验位
	 */
	uart_init.UART_Mode = UART_8bit_BRTx;	//模式
	uart_init.UART_BRT_Use = BRT_Timer2;	// 波特率发生器率,   BRT_Timer1~BRT_Timer4
	// 配置和蓝牙通讯的波特率 - 蓝牙芯片默认是9600
	uart_init.UART_BaudRate = 115200ul;		//波特率, 	   一般 110 ~ 115200
	uart_init.Morecommunicate = DISABLE;	//多机通讯允许, ENABLE,DISABLE
	uart_init.UART_RxEnable = ENABLE;		//允许接收,   ENABLE,DISABLE
	uart_init.BaudRateDouble = DISABLE;		//波特率加倍, ENABLE,DISABLE
	UART_Configuration(UART2, &uart_init);
	
	// uart中断使能
	NVIC_UART2_Init(ENABLE, Priority_1);
	
	// uart需要打开对应的开关才能使用
	UART2_SW(UART2_SW_P10_P11);
}


// 蓝牙模块初始化
void bluetooth_init(){
	// UART1关口配置可以省略，但UART2必须配置
	GPIO_UART2_Config();
	UART1_Config();
	UART2_Config();
}


// uart1写入uart2 - 自动发送结束符勾选 - 调试用
//void uart1_2_uart2(){
//	int i = 0;
//	if(COM1.RX_TimeOut > 0 && --COM1.RX_TimeOut == 0){
//		if(COM1.RX_Cnt > 0){
//			// 串口1收到数据写入串口2
//			while(COM1.RX_Cnt){
//				--COM1.RX_Cnt;
////				TX1_write2buff(RX1_Buffer[i++]);
//				TX2_write2buff(RX1_Buffer[i++]);
//			}
//		}
//	}
//}
